package cn.dujc.superkid.api;

import java.util.List;

import cn.dujc.superkid.bean.AnswerListResult;
import cn.dujc.superkid.bean.CreateOrderResult;
import cn.dujc.superkid.bean.CurrencyResult;
import cn.dujc.superkid.bean.ExamineIndexResult;
import cn.dujc.superkid.bean.ExamineListResult;
import cn.dujc.superkid.bean.ExaminePageResult;
import cn.dujc.superkid.bean.ExamineResultsResult;
import cn.dujc.superkid.bean.UnitTestResult;
import cn.dujc.superkid.bean.VideoExaminationResult;
import retrofit2.Call;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;

/**
 * 8、在线考试
 * @author du
 * date 2018/8/4 下午2:21
 */
public interface ApiExamineOnline {

    /**
     * 所有试卷列表
     * time	是	string	时间戳
     * token	是	string	token
     * channel	是	int	频道id
     */
    @GET("examine/list")
    public Call<Result<List<ExamineListResult>>> examineList(@QueryMap QMap map);

    /**
     * 单个试卷首页
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examine_id	是	int	试卷id
     * logincode	是	string	登陆验证代码
     */
    @GET("examine/index")
    public Call<Result<ExamineIndexResult>> examineIndex(@QueryMap QMap map);

    /**
     * 单个试卷详情页
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examine_id	是	int	试卷id
     * logincode	是	string	登陆验证代码
     */
    @GET("examine/page")
    public Call<Result<ExaminePageResult>> examinePage(@QueryMap QMap map);


    @GET("video/examination")
    public Call<Result<UnitTestResult.DataBean>> videoExamination(@QueryMap QMap map);


    /**
     * 单个试卷处理答案
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examine_id	是	int	试卷id
     * answer	是	string	答案 (格式如：{"answer1":1,"answer2":[1,2,3]} answer+顺序:答案,多选题答案用[]）
     * when	是	string	用时（00:60:10） ,数据未做验证
     * logincode	是	string	登陆验证代码
     * <b>测试的时候请在本地调用之前，查看题目的数量和答案提交数量是否匹配（有2个题目就需要有2个答案）</b>
     */
    @FormUrlEncoded
    @POST("examine/results")
    public Call<Result<ExamineResultsResult>> examineResults(@FieldMap QMap map);

    /**
     * 试卷题目查看解析
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * examine_id	是	int	试卷id
     * logincode	是	string	登陆验证代码
     *
     * @return 包含html代码的解析（看是否需要处理成结构化的数组）
     */
    @GET("examine/analysis")
    public Call<Result<String>> examineAnalysis(@QueryMap QMap map);

    /**
     * 获得所有答疑
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * logincode	是	string	验证登陆验证码
     * channel	否	int	频道id
     * num	否	int	每页显示数量，默认为10
     * page	否	int	第几页，默认为1
     */
    @GET("answer")
    public Call<Result<AnswerListResult>> answer(@QueryMap QMap map);

    /**
     * 提交答疑
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * question	是	string	问题内容
     * channel	是	int	频道id
     * logincode	是	string	登陆验证代码
     */
    @FormUrlEncoded
    @POST("answer/add")
    public Call<Result<Object>> answerAdd(@FieldMap QMap map);

    /**
     * 获得用户牛币
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * logincode	是	string	登陆验证码
     */
    @GET("member/getCurrency")
    public Call<Result<CurrencyResult>> memberGetCurrency(@QueryMap QMap map);

    /**
     * 充值牛币，支付成功后调用充值牛币
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * logincode	是	string	登陆验证码
     * product_id	是	int	vip产品id
     * num	是	int	牛币数量
     * paykey	是	string	支付key，用于验证（客户端加密规则为：md5(user_id+product_id+num)
     */
    @FormUrlEncoded
    @POST("member/currency")
    public Call<Result<Object>> memberCurrency(@FieldMap QMap map);

    /**
     * 牛币兑换会员
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * logincode	是	string	登陆验证码
     * product_id	是	int	vip产品id
     */
    @FormUrlEncoded
    @POST("member/vipCurrency")
    public Call<Result<Object>> memberVipCurrency(@FieldMap QMap map);

    /**
     * 创建订单(安卓)
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * logincode	是	string	登陆验证码
     * product_id	是	int	vip产品id
     */
    @FormUrlEncoded
    @POST("member/createOrder")
    public Call<Result<CreateOrderResult>> memberCreateOrder(@FieldMap QMap map);

    /**
     * 支付后修改订单状态(安卓)
     * time	是	string	时间戳
     * token	是	string	token
     * user_id	是	int	用户id
     * channel	是	int	频道id
     * logincode	是	string	登陆验证码
     * order	是	string	订单id
     * paykey	是	string	支付key，用于验证（客户端加密规则为：md5(订单号+user_id+success/fail)
     */
    @FormUrlEncoded
    @POST("member/orderPay")
    public Call<Result<Object>> memberOrderPay(@FieldMap QMap map);

}
